import axios, { type AxiosResponse } from 'axios';
// import type { AxiosResponse } from 'axios';
import { ElMessage, ElMessageBox } from 'element-plus';
//引入仓库
import { useUserInfoStore } from '../store/userinfo';

/* 定义response对象的data接口 */
interface ResponseData<T> {
  code: number;
  data: T;
  message: string;
}

// 配置新建一个 axios 实例
const service = axios.create({
  baseURL: 'http://sph-h5-api.atguigu.cn/api',
  timeout: 50000,
});

// 添加请求拦截器
service.interceptors.request.use(
  (config: any) => {
		if (useUserInfoStore().token) {
			config.headers.token = useUserInfoStore().token;
		}
		return config;
  }
);

// 添加响应拦截器
service.interceptors.response.use(
  //约束一下response
  async (response) => {
    // 响应数据
    const res = response;
    if (res.status !== 20000 && res.status !== 200) { /* 成功数据的code值为20000/200 */
      // 错误提示
      ElMessage({
        message: (typeof res.data == 'string' && res.data) || 'Error',
        type: 'error',
        duration: 5 * 1000
      })
      return Promise.reject(service.interceptors.response);
    } else {
      return res.data;
    }
  },

  (error) => {
    // 响应错误
    if (error.message.indexOf('timeout') != -1) {
      ElMessage.error('网络超时');
    } else if (error.message == 'Network Error') {
      ElMessage.error('网络连接错误');
    } else {
      if (error.response.data) ElMessage.error(error.response.statusText);
      else ElMessage.error('接口路径找不到');
    }
    return Promise.reject(error);
  }
);

export default service;